package br.com.scpe.managedbean.negocio.funcionario;

import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

import br.com.scpe.ejb.entity.Funcionario;
import br.com.scpe.managedbean.BaseManagedBean;
import br.com.scpe.relatorio.ConstantesRelatorio;
import br.com.scpe.relatorio.GenericBean;
import br.com.scpe.relatorio.GeraRelatorioBean;
import br.com.scpe.util.SCHSconstantes;

@ManagedBean
@ViewScoped
public class ConsultaFuncionarioManagedBean extends BaseManagedBean {

	public Funcionario funcionario = new Funcionario();
	
	private int tipoFiltro;
	
	public ConsultaFuncionarioManagedBean() {
		super();
	}

	public String setRequestFuncionario() {
		if(tipoFiltro != 0){
			Map<String,Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
			requestMap.put("funcionario", funcionario);
			requestMap.put("tipoFiltro", tipoFiltro);
			
			return SCHSconstantes.PAGINA_LISTAR_FUNCIONARIOS;
			
		} else {
			addMessageError("Selecione um filtro!");
			return null;
		}
	}
	
	public String consultarAlteracao() {
		if(tipoFiltro != 0){
			Map<String,Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
			requestMap.put("funcionario", funcionario);
			requestMap.put("tipoFiltro", tipoFiltro);
			
			return SCHSconstantes.PAGINA_LISTAR_ALTERAR_FUNCIONARIOS;
		} else {
			addMessageError("Selecione um filtro!");
			return null;
		}
	}
	
	public String consultarExclusao() {
		if(tipoFiltro != 0){
			Map<String,Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
			requestMap.put("funcionario", funcionario);
			requestMap.put("tipoFiltro", tipoFiltro);
			
			return SCHSconstantes.PAGINA_LISTAR_EXCLUIR_FUNCIONARIO;
		} else {
			addMessageError("Selecione um filtro!");
			return null;
		}
	}
	
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public void salvarEmPDF() throws IOException {
		
		HashMap params = new HashMap();
		
		params.putAll(GenericBean.listarAtributosValores(getFuncionario(), params));
		
		String reportUrlReal = ConstantesRelatorio.RELATORIO_SINTETICO;
		
		GeraRelatorioBean.gerarPDF(null, params, reportUrlReal);
	}
	
	public String detalharFuncionario() {
		Map<String,Object> requestMap = FacesContext.getCurrentInstance().getExternalContext().getRequestMap();
		requestMap.put("funcionario",funcionario);
		
		return "alterarUsuario";
	}
	
	public void resetFiltro() {
		tipoFiltro = 0;
	}
	
	/*========================= GETTERS AND SETTERS ============================*/
	
	public Integer getTipoFiltro() {
		return tipoFiltro;
	}
	
	public void setTipoFiltro(Integer tipoFiltro) {
		this.tipoFiltro = tipoFiltro;
	}
	
	public Funcionario getFuncionario() {
		return funcionario;
	}
	
	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}
}